import re
import time

from common.BasePages import BasePage


class GatewayData(BasePage):
    # 数据分析
    def gateway_data_url(self):
        self.goto_url("projectManagement/gatewayEvent")

    def gateway_data_cat(self):
        """
        网关事件
        :return:
        """
        self.goto_url("projectManagement/gatewayEvent")
        time.sleep(2)
        response = self.cat_url(self.page.get_by_role("button", name=" 查询"), "EventsRecordInfo")  # 获取接口响应的结果。
        print(response)
        assert response['Data']['Items'][0]['GatewaySN'] == "30100B14165BCC38" and response['Data']['Items'][0][
            'AlarmType'] == "上线", "失败"

    def underlying_query(self):
        """
        基础信息查询
        :return:
        """
        self.goto_url("dataAnalysisManagement/dataQuery")
        self.page.get_by_role("button", name="选择参数").click()
        self.page.get_by_role("row", name="所属项目 网关名称 设备名称 参数名称 地址 数据类型 点位标识").locator(
            "span").nth(
            1).click()
        self.page.get_by_role("button", name="确 定").click()
        response = self.cat_url(self.page.get_by_role("button", name=" 查询"), "DataCenter")
        print(response)

    def data_trends(self):
        """
        数据趋势
        :return:
        """
        self.goto_url("dataAnalysisManagement/realTimeData")
        self.page.get_by_role("button", name="选择参数").click()
        self.page.get_by_role("row", name="所属项目 网关名称 设备名称 参数名称 地址 数据类型 点位标识").locator(
            "span").nth(
            1).click()
        self.page.get_by_role("button", name="确 定").click()
        response = self.cat_url(self.page.get_by_role("button", name=" 查询"), "DataCenter")
        print(response)

    def create_grouping(self):
        """
        分组添加和查询
        :return:
        """
        self.goto_url("dataAnalysisManagement/groupRealTimeData")
        self.page.get_by_role("button", name="分组管理").click()
        self.page.get_by_role("button", name=" 新增").click()
        self.page.get_by_role("dialog", name="新增分组").get_by_placeholder("请输入所属租户").click()
        self.page.get_by_role("listitem").get_by_text("中国移动青岛总行").click()
        self.page.get_by_role("dialog", name="新增分组").get_by_placeholder("请输入分组名称").click()
        self.page.get_by_role("dialog", name="新增分组").get_by_placeholder("请输入分组名称").fill("张院龙分组")
        self.page.get_by_role("button", name="选择参数").click()
        self.page.get_by_role("row", name="张院龙 测试网关 张院龙设备 设备添加001 40200").locator("label span").nth(
            1).click()
        # self.page.get_by_role("row", name="所属项目 网关名称 设备名称 参数名称 地址 数据类型 点位标识").locator(
        #     "span").nth(
        #     1).click()
        self.page.get_by_label("选择参数").get_by_role("button", name="确 定").click()
        self.page.get_by_role("button", name="确 定").click()
        time.sleep(2)
        response = self.cat_url(self.page.get_by_role("button", name=" 查询"), "DataCenter")
        print(response)

    def computational_data_create(self):
        """
        计算数据查询-计算公式
        :return:
        """
        self.goto_url("dataAnalysisManagement/computeDataQuery")
        self.page.get_by_role("button", name=" 计算公式设置").click()
        self.page.get_by_role("button", name="  新增").click()
        self.page.get_by_role("textbox", name="点击选择设备").click()
        self.page.get_by_role("radio").click()
        self.page.get_by_role("button", name="确定").click()
        self.page.get_by_role("textbox", name="请输入名称，40字内").click()
        self.page.get_by_role("textbox", name="请输入名称，40字内").fill("张院龙公式")
        self.page.get_by_role("textbox", name="请输入标识，40字内").click()
        self.page.get_by_role("textbox", name="请输入标识，40字内").fill("33")
        self.page.get_by_role("textbox", name="请输入公式/值").click()
        self.page.get_by_role("textbox", name="请输入公式/值").fill("[3]+[3]")
        self.page.get_by_role("button", name="确 定").click()
        self.assert_alert_content("新增成功")

    def computational_data_query(self):
        """
        计算数据查询-计算公式
        :return:
        """
        self.page.get_by_role("textbox", name="点击选择设备").click()
        self.page.get_by_role("radio").click()
        self.page.get_by_role("button", name="确 定").click()
        self.page.get_by_role("button", name="计算公式选择 ").click()
        self.page.locator("div").filter(has_text=re.compile(r"^全部$")).locator("span").nth(2).click()
        self.page.get_by_role("button", name=" 查询").click()

    def io_data_query(self):
        """
        I/O统计
        :return:
        """
        self.goto_url("dataAnalysisManagement/deviceRecord")
        self.page.get_by_role("button", name="选择点位").click()
        self.page.get_by_role("row", name="所属项目 网关名称 设备名称 参数名称 地址 数据类型 点位标识").locator(
            "span").nth(
            1).click()
        self.page.get_by_role("button", name="确 定").click()
        self.page.get_by_role("button", name=" 查询").click()

    def report_daily_query(self):
        """
        报表-日
        :return:
        """
        self.goto_url("dataAnalysisManagement/charts/statisticalCharts")
        self.page.get_by_role("textbox", name="请选择租户").click()
        self.page.get_by_role("listitem").click()
        self.page.get_by_role("textbox", name="请输入项目名称").click()
        self.page.get_by_role("listitem").click()
        self.page.get_by_role("listitem").click()
        response = self.cat_url(self.page.get_by_role("button", name=" 查询"), "DataCenter")  # 获取接口响应的结果。
        print(response)
        no_data_element = self.page.locator('text=暂无数据')
        assert not no_data_element.is_visible(), "接口调同，但是接口没数据"

    def monthly_report_query(self):
        """
        报表-月查询
        :return:
        """
        self.goto_url("dataAnalysisManagement/charts/statisticalCharts")
        self.page.get_by_role("tab", name="月报表").click()
        self.page.get_by_role("textbox", name="请选择租户").click()
        self.page.get_by_role("listitem").click()
        self.page.get_by_role("textbox", name="请输入项目名称").click()
        self.page.get_by_role("listitem").click()
        self.page.get_by_role("listitem").click()
        response = self.cat_url(self.page.get_by_role("button", name=" 查询"), "DataCenter")  # 获取接口响应的结果。
        print(response)
        no_data_element = self.page.locator('text=暂无数据')
        assert not no_data_element.is_visible(), "接口调同，但是接口没数据"

    def annual_report_query(self):
        """
        报表-年查询
        :return:
        """
        self.goto_url("dataAnalysisManagement/charts/statisticalCharts")
        self.page.get_by_role("tab", name="年报表").click()
        self.page.get_by_role("textbox", name="请选择租户").click()
        self.page.get_by_role("listitem").click()
        self.page.get_by_role("textbox", name="请输入项目名称").click()
        self.page.get_by_role("listitem").click()
        self.page.get_by_role("listitem").click()
        response = self.cat_url(self.page.get_by_role("button", name=" 查询"), "DataCenter")  # 获取接口响应的结果。
        print(response)
        no_data_element = self.page.locator('text=暂无数据')
        assert not no_data_element.is_visible(), "接口调同，但是接口没数据"

    def link_analysis(self):
        self.goto_url("dataAnalysisManagement/link")
        self.page.get_by_role("textbox", name="请选择所属租户").click()
        self.page.get_by_role("listitem").click()
        self.page.get_by_role("textbox", name="请输入项目名称").click()
        self.page.get_by_role("list").click()
        self.page.get_by_role("button", name=" 查询").click()
